2025年12月CCF—GESP(C++一级)编程能力等级认证试卷
一级
2025
2026-07-20 20:32:21
182次
一、单选题
如果正整数N的所有奇因数(即能将N整除的正奇数)的和是27的倍数,则称N是27的神秘数。下面的C++代码用于判断输入的N是否为27的神秘数。如输入53,它有两个奇因数1和53,则将输出 Y 。( )。
int i, N, cnt = 0;
cin >> N;
for (i=1; i <=N; i++){
if (_______________)
cnt += i;
}
if(cnt % 27 == 0)
cout << 'Y'; | A. (N % i) && (i % 2) |
B. (N % i == 0) && (i % 2 == 0) |
| C. (N % i == 0) && (i % 2) |
D. (N % i) && (i % 2 == 0) |
【知识点】 CCF—GESP C++一级
某个整数很长很长,形如:1232123212321……,其规律是从1开始逐一升高到3然后逐一降低到1,然后又逐一升高到3,一直到很长很长。假设最高位编号为1,要求判断从左边最高位开始的第N位数是几?在横线处应该填入的代码是( )。
int N, M; cout << "请输入编号:"; cin >> N; M = ________________; if (M != 0) cout << M; else cout << 2;
| A. N % 4 |
B. N / 4 |
| C. N % 3 |
D. N / 3 |
【知识点】 CCF—GESP C++一级
如果一个正整数能被3整除,或者某一位能被3整除,则称之为“漂亮数”。下面的C++代码用于判断正整数N是否为漂亮数,L1行的横线处应该填入的代码是( )。
int N, Flag;
cin >> N;
Flag = 0; // "非漂亮数"
if (N % 3 == 0)
Flag = 1; //"漂亮数"
else
while (N != 0){
if (_______________){ // L1
Flag = 1;
break;
}
N /= 10;
}
cout << (Flag? "漂亮数" : "非漂亮数"); | A. N % 10 == 0 |
B. N % 3 % 10 == 0 |
| C. N % 10 % 3 |
D. N % 10 % 3 == 0 |
【知识点】 CCF—GESP C++一级
执行下面C++代码可以找出千位与个位的和恰好等于中间两位的四位数,横线处应该填入( )
int count = 0;
int a, bc, d, tmp;
for (int i = 1000; i <= 9999; i++) {
a = (tmp = i) / 1000;
___________________
bc = tmp / 10;
d = tmp - bc * 10;
if ( a + d == bc) {
count++;
}
}
cout << count; | A. tmp = i / 10; |
B. tmp = i % 100; |
| C. tmp -= a * 1000; |
D. tmp = i - i%1000; |
【知识点】 CCF—GESP C++一级
两个正整数,只要不相等,就一直进行如下操作:最大数减去最小数得到一个值,该值和两个数的最小数构成新的两个正整数,重复操作,直到两个数相等,此时输出该数。下面的C++代码用于实现该操作,横线处应该填写的代码是( )。
int N, M;
cin >> N >> M;
while (N != M){
if (N > M)
_____________;
else
_____________;
}
cout << N; | A.N = N - M M = M - N | B.M = M - N N = N - M |
| C.M = N - M N = M - N | D.N, M = M, N M, N = N, M |
【知识点】 CCF—GESP C++一级
二、判断题
下面的C++代码能用于判断输入的正整数是否为对称数。所谓对称数是指从左到右和从右到左读该数,其值相同,121或414等是对称数,而123不是对称数。( )
int n, new_number;
cout << "请输入正整数:";
cin >> n;
new_number = 0;
while (n != 0){
new_number = new_number * 10 + n % 10;
n /= 10;
}
if (n == new_number)
cout << "对称数";
else
cout << "非对称数"; | A.正确 | B.错误 |
【知识点】 CCF—GESP C++一级
三、编程题
小杨的爱心快递
时间限制:1.0 s
内存限制:512.0 MB
题目描述
小杨是“爱心社区”的小志愿者,每周他都会帮助邻居们寄送捐赠给山区小学的文具和书籍。快递公司为了支持公益行动,制定了特殊的运费规则,鼓励大家合理包装:
假设快递的体积为 V ,重量为 G。
按体积计算:运费按体积计算 ,公式是 0 . 5 x V 元。
按重量计算:为了鼓励减轻包裹重量 ,规则是: 当重量小于 300 克, 即 G < 300 时 ,运费为 M 元 ;当重量达到或超过 300 克, 即 G ≥ 300 时 ,运费为 N 元。
快递公司的叔叔说:“我们应该选择最公平合理的计费方式。”
所以,最终的运费会取按体积计算和按重量计算这两种方式中价格较低的那一个,这样对寄件人最公道。
输入格式
四行 ,每行一个一位小数的浮点数 ,分别代表 ,快递的体积 V ,快递的重量 G ,第一档重量运费 M ,第二档重量运费 N。
输出格式
一行一个一位小数,代表实际快递运费。
样例
输入样例 1
100.4 300.2 60.6 70.5
输出样例 1
50.2
输入样例 2
99.8 200.9 60.2 70.1
输出样例 2
49.9
样例解释
对于样例 1 :快递体积 V 为 100.4 ,重量 G 为 300.2 ,第一档重量运费 M 为 60.6 ,第二档重量运费 N 为 70.5 。
– 若按体积收费 ,费用为 0.5 x 100.4 = 50.2 ;
– 若按重量收费, 由于重量 G = 300.2 超过 300 ,费用为 70.5 。
输出价格较低的 50.2 。
对于样例 2 :快递体积 V 为 99.8 ,重量 G 为 200.9 ,第一档重量运费 M 为 60.2 ,第二档重量运费 N 为 70.1 。
– 若按体积收费 ,费用为 0.5 x 99.8 = 49.9 ;
– 若按重量收费, 由于重量 G = 200.9 小于 300 ,费用为 60.2 。输出价格较低的 49.9 。
数据范围
对于所有测试点 ,保证给出的浮点数不超过 1000。
【知识点】 CCF—GESP C++一级
手机电量显示
时间限制:1.0 s
内存限制:512.0 MB
题目描述
小杨的手机就像一个聪明的小助手,当电量变化时,它会用不同的方式来提醒我们,假设当前的电量百分比为 P:
当电量非常低(不超过 10, 即 P ≤ 10) ,它会显⽰一个大写字母 R ,就像在说:“快给我充电吧!(Red警告⾊) ”
当电量有点低(超过 10 但不超过 20, 即 10 < P ≤ 20) ,它会显⽰一个大写字母 L ,意思是“ 电量有点Low啦!”
当电量比较充足(超过 20, 即 P > 20) ,它就会直接显⽰具体的数字 ,比如直接显⽰ 50 ,表⽰还有 50 的电量。
输入格式
第一行一个正整数 ,代表数据组数。
对于每组数据,一行包含一个正整数 ,代表手机电量百分比。
输出格式
对于每组数据,输出一行,代表当前手机显示的电量信息。
样例
输入样例
5 10 1 20 99 19
输出样例
R R L 99 L
样例解释
输入样例 1 共有五组数据:
第一组数据手机电量 P = 10 ,满足 P ≤ 10, 电量非常低 ,显⽰ R 。
第二组数据手机电量 P = 1 ,满足 P ≤ 10, 电量非常低 ,显⽰ R 。
第三组数据手机电量 P = 20 ,满足 10 < P 20, 电量有点低 ,显⽰ L 。
第四组数据手机电量 P = 99 ,满足 P > 20, 电量比较充足 ,直接显⽰具体的数字 99 。 · 第五组数据手机电量 P = 19 ,满足 10 < P ≤ 20, 电量有点低 ,显⽰ L 。
数据范围
对于所有测试点 ,保证 1 ≤ T ≤ 20, 1 ≤ P ≤ 100。
【知识点】 CCF—GESP C++一级
